#pragma once 
#include <semaphore.h>


namespace MySemModule
{
    int gdefault = 1;
    class Sem
    {
    private:
        sem_t _sem;
        int init_value;
    public:

        Sem(int val = gdefault):init_value(val)
        {
            sem_init(&_sem,0,init_value); //0表示不分享给进程 ?
        }
        void P()
        {
            int n = sem_wait(&_sem); //信号量计数--
            (void)n;
        }
        void V()
        {
            int n = sem_post(&_sem); //信号量计数--
            (void)n;
        }
        ~Sem()
        {
            sem_destroy(&_sem);
        }
    };
}